﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using VLUSM_BusinessLogic.DataTransferObjects;
using System.Collections.ObjectModel;

namespace VLUSM_Service
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "ICatalogueService" in both code and config file together.
    [ServiceContract]
    public interface ICatalogueService
    {
        #region DVHCCap1
        [OperationContract]
        ObservableCollection<DVHCCap1DTO> GetDVHCCap1List();
        [OperationContract]
        DVHCCap1DTO GetDVHCCap1ByID(int IDFilter);
        [OperationContract]
        DVHCCap1DTO GetDVHCCap1ByTen(string TenFilter);
        [OperationContract]
        DVHCCap1DTO GetDVHCCap1ByMaDonVi(string MaDonViFilter);
        [OperationContract]
        DVHCCap1DetailDTO GetDVHCCap1DetailByID(int IDFilter);
        [OperationContract]
        void SaveDVHCCap1(DVHCCap1DTO objdto);
        [OperationContract]
        void SaveDVHCCap1List(ObservableCollection<DVHCCap1DTO> dtolist);
        [OperationContract(Name = "RemoveDVHCCap1")]
        void RemoveDVHCCap1(DVHCCap1DTO objdto);
        [OperationContract(Name = "RemoveDVHCCap1ByID")]
        void RemoveDVHCCap1(int IDFilter);
        #endregion

        #region DVHCCap2
        [OperationContract]
        ObservableCollection<DVHCCap2DTO> GetDVHCCap2List();
        [OperationContract]
        ObservableCollection<DVHCCap2DTO> GetDVHCCap2ListByDVHCCap1ID(int IDFilter);
        [OperationContract]
        ObservableCollection<DVHCCap2DTO> GetDVHCCap2ListByDVHCCap1MaDonVi(string MaDonViFilter);
        [OperationContract]
        ObservableCollection<DVHCCap2DTO> GetDVHCCap2ListByDVHCCap1Ten(string TenFilter);
        [OperationContract]
        DVHCCap2DTO GetDVHCCap2ByID(int IDFilter);
        [OperationContract]
        DVHCCap2DTO GetDVHCCap2ByMaDonVi(string MaDonViFilter);
        [OperationContract]
        void SaveDVHCCap2(DVHCCap2DTO objdto);
        [OperationContract]
        void SaveDVHCCap2List(ObservableCollection<DVHCCap2DTO> dtolist);
        [OperationContract(Name = "RemoveDVHCCap2")]
        void RemoveDVHCCap2(DVHCCap2DTO objdto);
        [OperationContract(Name = "RemoveDVHCCap2ByID")]
        void RemoveDVHCCap2(int IDFilter);
        #endregion

        #region ChinhSach
        [OperationContract]
        ObservableCollection<ChinhSachDTO> GetChinhSachList();
        [OperationContract]
        ChinhSachDTO GetChinhSachByID(int IDFilter);
        [OperationContract]
        ChinhSachDTO GetChinhSachByTen(string TenFilter);
        [OperationContract]
        void SaveChinhSach(ChinhSachDTO objdto);
        [OperationContract]
        void SaveChinhSachList(ObservableCollection<ChinhSachDTO> dtolist);
        [OperationContract]
        void RemoveChinhSach(ChinhSachDTO objdto);
        [OperationContract]
        void RemoveChinhSachByID(int IDFilter);
        #endregion

        #region DanToc
        [OperationContract]
        ObservableCollection<DanTocDTO> GetDanTocList();
        [OperationContract]
        DanTocDTO GetDanTocByID(int IDFilter);
        [OperationContract]
        DanTocDTO GetDanTocByTen(string TenFilter);
        [OperationContract]
        void SaveDanToc(DanTocDTO objdto);
        [OperationContract]
        void SaveDanTocList(ObservableCollection<DanTocDTO> dtolist);
        [OperationContract(Name = "RemoveDanToc")]
        void RemoveDanToc(DanTocDTO objdto);
        [OperationContract(Name = "RemoveDanTocByID")]
        void RemoveDanToc(int IDFilter);
        #endregion

        #region TonGiao
        [OperationContract]
        ObservableCollection<TonGiaoDTO> GetTonGiaoList();
        [OperationContract]
        TonGiaoDTO GetTonGiaoByID(int IDFilter);
        [OperationContract]
        TonGiaoDTO GetTonGiaoByTen(string TenFilter);
        [OperationContract]
        void SaveTonGiao(TonGiaoDTO objdto);
        [OperationContract]
        void SaveTonGiaoList(ObservableCollection<TonGiaoDTO> dtolist);
        [OperationContract(Name = "RemoveTonGiao")]
        void RemoveTonGiao(TonGiaoDTO objdto);
        [OperationContract(Name = "RemoveTonGiaoByID")]
        void RemoveTonGiao(int IDFilter);
        #endregion

        #region LoaiVanBang
        [OperationContract]
        ObservableCollection<LoaiVanBangDTO> GetLoaiVanBangList();
        [OperationContract]
        LoaiVanBangDTO GetLoaiVanBangByID(int IDFilter);
        [OperationContract]
        LoaiVanBangDTO GetLoaiVanBangByTen(string TenFilter);
        [OperationContract]
        void SaveLoaiVanBang(LoaiVanBangDTO objdto);
        [OperationContract]
        void SaveLoaiVanBangList(ObservableCollection<LoaiVanBangDTO> dtolist);
        [OperationContract(Name = "RemoveLoaiVanBang")]
        void RemoveLoaiVanBang(LoaiVanBangDTO objdto);
        [OperationContract(Name = "RemoveLoaiVanBangByID")]
        void RemoveLoaiVanBang(int IDFilter);
        #endregion

        #region LoaiThayDoi Methods
        [OperationContract]
        ObservableCollection<LoaiThayDoiDTO> GetLoaiThayDoiList();
        [OperationContract]
        LoaiThayDoiDTO GetLoaiThayDoiByID(int IDFilter);
        [OperationContract]
        LoaiThayDoiDTO GetLoaiThayDoiByTen(string TenFilter);
        #endregion

        #region HoatDongDoanThe
        [OperationContract]
        ObservableCollection<HoatDongDoanTheDTO> GetHoatDongDoanTheList();
        [OperationContract]
        HoatDongDoanTheDTO GetHoatDongDoanTheByID(int IDFilter);
        [OperationContract]
        HoatDongDoanTheDTO GetHoatDongDoanTheByTen(string TenFilter);
        [OperationContract]
        void SaveHoatDongDoanThe(HoatDongDoanTheDTO objdto);
        [OperationContract]
        void SaveHoatDongDoanTheList(ObservableCollection<HoatDongDoanTheDTO> dtolist);
        [OperationContract(Name = "RemoveHoatDongDoanThe")]
        void RemoveHoatDongDoanThe(HoatDongDoanTheDTO objdto);
        [OperationContract(Name = "RemoveHoatDongDoanTheByID")]
        void RemoveHoatDongDoanThe(int IDFilter);
        #endregion

        #region CauLacBo
        [OperationContract]
        ObservableCollection<CauLacBoDTO> GetCauLacBoList();
        [OperationContract]
        CauLacBoDTO GetCauLacBoByID(int IDFilter);
        [OperationContract]
        CauLacBoDTO GetCauLacBoByTen(string TenFilter);
        [OperationContract]
        void SaveCauLacBo(CauLacBoDTO objdto);
        [OperationContract]
        void SaveCauLacBoList(ObservableCollection<CauLacBoDTO> dtolist);
        [OperationContract(Name = "RemoveCauLacBo")]
        void RemoveCauLacBo(CauLacBoDTO objdto);
        [OperationContract(Name = "RemoveCauLacBoByID")]
        void RemoveCauLacBo(int IDFilter);
        #endregion

        #region DonVi
        [OperationContract]
        ObservableCollection<DonViDTO> GetDonViList();
        [OperationContract]
        DonViDTO GetDonViByID(int IDFilter);
        [OperationContract]
        DonViDTO GetDonViByTen(string TenFilter);
        [OperationContract]
        ObservableCollection<DonViDTO> GetDonViListByCapTruong();
        [OperationContract]
        ObservableCollection<DonViDTO> GetDonViListByCapDonVi();
        [OperationContract]
        void SaveDonVi(DonViDTO objdto);
        [OperationContract]
        void SaveDonViList(ObservableCollection<DonViDTO> dtolist);
        [OperationContract(Name = "RemoveDonVi")]
        void RemoveDonVi(DonViDTO objdto);
        [OperationContract(Name = "RemoveDonViByID")]
        void RemoveDonVi(int IDFilter);
        #endregion

        #region KhoaHoc
        [OperationContract]
        ObservableCollection<KhoaHocDTO> GetKhoaHocList();
        [OperationContract]
        KhoaHocDTO GetKhoaHocByID(int IDFilter);
        [OperationContract]
        KhoaHocDTO GetKhoaHocByNamNhapHoc(int NamNhapHocFilter);
        [OperationContract]
        KhoaHocDTO GetKhoaHocByTen(string TenFilter);
        [OperationContract]
        void SaveKhoaHoc(KhoaHocDTO objdto);
        [OperationContract]
        void SaveKhoaHocList(ObservableCollection<KhoaHocDTO> dtolist);
        [OperationContract(Name = "RemoveKhoaHoc")]
        void RemoveKhoaHoc(KhoaHocDTO objdto);
        [OperationContract(Name = "RemoveKhoaHocByID")]
        void RemoveKhoaHoc(int IDFilter);
        #endregion

        #region Lop
        [OperationContract]
        ObservableCollection<LopDTO> GetLopList();
        [OperationContract]
        ObservableCollection<LopDTO> GetLopListByDonViID(int DonViIDFilter);
        [OperationContract]
        ObservableCollection<LopDTO> GetLopListByKhoaHocID(int KhoaHocIDFilter);
        [OperationContract]
        ObservableCollection<LopDTO> GetLopListByDonViandKhoaHocID(int DonViIDFilter, int KhoaHocIDFilter);
        [OperationContract]
        LopDTO GetLopByID(int IDFilter);
        [OperationContract]
        LopDTO GetLopByTen(string TenFilter);
        [OperationContract]
        LopDTO GetLopByMalop(string MaLopFilter);
        [OperationContract]
        void SaveLop(LopDTO objdto);
        [OperationContract]
        void SaveLopList(ObservableCollection<LopDTO> dtolist);
        [OperationContract(Name = "RemoveLop")]
        void RemoveLop(LopDTO objdto);
        [OperationContract(Name = "RemoveLopByID")]
        void RemoveLopByID(int IDFilter);
        #endregion

        #region MonHoc
        [OperationContract]
        ObservableCollection<MonHocDTO> GetMonHocList();
        [OperationContract]
        MonHocDTO GetMonHocByID(int IDFilter);
        [OperationContract]
        MonHocDTO GetMonHocByMaMonHoc(string MaMonHocFilter);
        [OperationContract]
        MonHocDTO GetMonHocByTen(string TenFilter);
        [OperationContract]
        void SaveMonHoc(MonHocDTO objdto);
        [OperationContract]
        void SaveMonHocList(ObservableCollection<MonHocDTO> dtolist);
        [OperationContract(Name = "RemoveMonHoc")]
        void RemoveMonHoc(MonHocDTO objdto);
        [OperationContract(Name = "RemoveMonHocByID")]
        void RemoveMonHoc(int IDFilter);
        #endregion
    }
}
 
